package copyengine.dataLayer.rpc.moudle.request
{
	import copyengine.utils.GeneralUtils;

	import flash.errors.IOError;
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLLoaderDataFormat;
	import flash.net.URLRequest;
	import flash.net.URLRequestMethod;
	import flash.utils.ByteArray;
	import flash.utils.Timer;

	import org.osmf.events.TimeEvent;

	public final class CEHttpRequestWrapper
	{
		//HTTP 目前不可用 
//		private var countTimer:Timer;
//
//		private var retryTime:int;
//		private var timeoutTimer:Timer;
//
//		private var requestURL:String;
//		private var requestData:ByteArray;
//		private var requestLoader:URLLoader;
//		private var ceHttpRequest:CERpcRequestManger;
//
//
//		public function CEHttpRequestWrapper(_requestURL:String)
//		{
//			requestURL = _requestURL;
//		}
//
//		public function sendRequest(_romeHttpRequest:CERpcRequestManger, _data:ByteArray, _retryTime:int, _timeoutTime:int):void
//		{
//			ceHttpRequest = _romeHttpRequest;
//			requestData = _data;
//			retryTime = _retryTime;
//
//			requestLoader = new URLLoader();
//			requestLoader.dataFormat = URLLoaderDataFormat.BINARY;
//
//			timeoutTimer = new Timer(_timeoutTime);
//
//			doSendRequest();
//		}
//
//		private function doSendRequest():void
//		{
//			var request:URLRequest = new URLRequest(requestURL);
//			request.contentType = "application/octet-stream";
//			request.method = URLRequestMethod.POST;
//			request.data = requestData;
//
//			timeoutTimer.start();
//			requestLoader.load(request);
//			addListener();
//		}
//
//		public function dispose():void
//		{
//			timeoutTimer.stop();
//			removeListener();
//			requestLoader.close();
//			countTimer = null;
//			requestLoader = null;
//			ceHttpRequest = null;
//		}
//
//		private function addListener():void
//		{
//			GeneralUtils.addTargetEventListener(timeoutTimer, TimeEvent.COMPLETE, onTimeout);
//			GeneralUtils.addTargetEventListener(requestLoader, Event.COMPLETE, onRequestComplate);
//			GeneralUtils.addTargetEventListener(requestLoader, IOErrorEvent.IO_ERROR, onRequestError);
//		}
//
//		private function removeListener():void
//		{
//			GeneralUtils.removeTargetEventListener(timeoutTimer, TimeEvent.COMPLETE, onTimeout);
//			GeneralUtils.removeTargetEventListener(requestLoader, Event.COMPLETE, onRequestComplate);
//			GeneralUtils.removeTargetEventListener(requestLoader, IOErrorEvent.IO_ERROR, onRequestError);
//		}
//
//		private function onRequestComplate(e:Event):void
//		{
//			ceHttpRequest.receiveServerResponse(requestLoader.data as ByteArray, this);
//		}
//
//		private function onRequestError(e:IOErrorEvent):void
//		{
//			tryToReSend();
//		}
//
//		private function onTimeout(e:Event):void
//		{
//			tryToReSend();
//		}
//
//		private function tryToReSend():void
//		{
//			retryTime--;
//			if (retryTime > 0)
//			{
//				resetPreRequest();
//				doSendRequest();
//			}
//			else
//			{
//				ceHttpRequest.failedToRequest(this);
//			}
//		}
//
//		private function resetPreRequest():void
//		{
//			requestLoader.close();
//			timeoutTimer.reset();
//		}
	}
}